#include<bits/stdc++.h>
#define MAXN 2005
using namespace std;
inline int read(){
    int x=0,f=1;
    char ch=getchar();
    while(ch<'0'||ch>'9'){
        if(ch=='-') f=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9'){
        x=x*10+ch-48;
        ch=getchar();
    }
    return x*f;
}
int T,n,A[MAXN],f[MAXN][MAXN][2],sum[MAXN],g[MAXN][2];
int main(){
    freopen("color.in","r",stdin);
    freopen("color.out","w",stdout);
    T=read();
    while(T--){
        n=read();
        for(int i=1;i<=n;i++) A[i]=read(),sum[i]=g[i][0]=g[i][1]=0;
        for(int i=2;i<=n;i++){
            if(A[i]==A[i-1]) sum[i]=sum[i-1]+A[i];
            else sum[i]=sum[i-1];
        }
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
                f[i][j][0]=f[i][j][1]=0;
        for(int i=1;i<=n;i++){
            for(int j=1;j<=i-1;j++){
                int find_max_0=g[j+1][0],find_max_1=g[j+1][1];
                int delta=sum[i-1]-sum[j+1];
                if(A[i]==A[j]){
                    f[i][j][0]=max(f[i][j][0],find_max_1+A[i]+delta);
                    f[i][j][1]=max(f[i][j][1],find_max_0+A[i]+delta);
                }
                else{
                    f[i][j][0]=max(f[i][j][0],find_max_1+delta);
                    f[i][j][1]=max(f[i][j][1],find_max_0+delta);
                }
                g[i][0]=max(g[i][0],f[i][j][0]);
                g[i][1]=max(g[i][1],f[i][j][1]);
            }
        }
        int ans=0;
        for(int j=1;j<=n;j++) ans=max(ans,max(f[n][j][0],f[n][j][1]));
        printf("%d\n",ans);
    }
    return 0;
}